//package com.monitor.app_monitor.service.quartz.task;
//
//import com.monitor.app_monitor.entity.TaskLogAnnotation;
//import com.monitor.app_monitor.service.quartz.utils.*;
//import io.micrometer.core.instrument.ImmutableTag;
//import io.micrometer.core.instrument.MeterRegistry;
//import io.micrometer.core.instrument.Tag;
//import lombok.extern.slf4j.Slf4j;
//import org.quartz.*;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Qualifier;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.Resource;
//import java.io.File;
//import java.io.FileReader;
//import java.io.IOException;
//import java.io.LineNumberReader;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.concurrent.ThreadPoolExecutor;
//import java.util.concurrent.atomic.AtomicInteger;
//
///**
// * @ClassName CellectDataCheck.java
// * @Author ning
// * @Description TODO
// * @CreateTime 2021年12月16日 10:18:00
// */
//
//@DisallowConcurrentExecution //作业不并发
//@Component
//@Slf4j
//public class CellectRGFileSizeCheck implements Job {
//
//    @Resource
//    @Qualifier("cellectfileSizeMap")
//    private Map<String, AtomicInteger> cellectfileSizeMap;
//
//
//    @Resource
//    @Qualifier("RgEmsMap")
//    private Map<String, Map<String,AtomicInteger>> RgEmsMap;
//
//    @Resource
//    @Qualifier("spcThreadPool")
//    private ThreadPoolExecutor spcThreadPool;
//
//    @Resource
//    private ExecuteScript executeScript;
//
//
//    @Value("${dataPath}")
//    private String dataPath;
//
//    @Resource
//    @Qualifier("getRgInfo")
//    private Map<String,String> getRgInfo;
//
//    @Value("${fileinfo}")
//    private  String fileInfoScript;
//
//    @Resource
//    private RgExecuteScript rgExecuteScript;
//
//    @Autowired
//    MeterRegistry registry;
//
//    @Value("${rgfileinfo}")
//    private String rgfileinfo;
//
//    @TaskLogAnnotation
//    @Override
//    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//        /**
//         * 监控二干文件大小行数
//         */
//
//        try {
//            RgEmsInfo rgEmsInfos = rgExecuteScript.executeScript("/home/deployer/bin/RGDATAPRSS.py");
//
//            for (RgScriptExecResult rgEmsInfo : rgEmsInfos.getData()) {
//                this.spcThreadPool.submit(() -> {
//                    StringBuilder stringBuilder = new StringBuilder();
//
//                    stringBuilder.append("/data11/YG2/");
//                    stringBuilder.append(rgEmsInfo.getNowData());
//                    stringBuilder.append("/");
//                    stringBuilder.append(rgEmsInfo.getProvince());
//                    stringBuilder.append("/");
//                    stringBuilder.append(rgEmsInfo.getResName());
//                    stringBuilder.append("/");
//                    stringBuilder.append(rgEmsInfo.getFileName());
//
//                    long fileNb = 0;
//                    long fileSize = 0;
//                    try {
//                        //FileinfoScriptExecResult fileinfoScriptExecResult = executeScript.executeRgFileInfoScript(rgfileinfo, stringBuilder.toString());
//                        File rgFile = new File(stringBuilder.toString());
//                        fileNb = getLineNumber(rgFile);
//                        fileSize = rgFile.length();
//
////                        if (fileinfoScriptExecResult.getFileNb() != null) {
////                            fileNb = Integer.valueOf(fileinfoScriptExecResult.getFileNb());
////
////                        }
////                        if (fileinfoScriptExecResult.getFileSize() != null) {
////                            fileSize = Integer.valueOf(fileinfoScriptExecResult.getFileSize());
////
////                        }
//
//
//
//                        if (RgEmsMap.get("filesize").containsKey(rgEmsInfo.getNowData()+rgEmsInfo.getFileInfo()+rgEmsInfo.getResName()+rgEmsInfo.getFileName())) {
//                            RgEmsMap.get("filesize").get(rgEmsInfo.getNowData()+rgEmsInfo.getFileInfo()+rgEmsInfo.getResName()+rgEmsInfo.getFileName()).set((int) fileSize);
//                        } else {
//                            List<Tag> tags = new ArrayList<>();
//
//                            tags.add(new ImmutableTag("emsIp",rgEmsInfo.getEmsIp()));
//                            tags.add(new ImmutableTag("emsName",rgEmsInfo.getEmsName()));
//                            tags.add(new ImmutableTag("fileInfo",rgEmsInfo.getFileInfo()));
//                            tags.add(new ImmutableTag("fileName",rgEmsInfo.getFileName()));
//                            tags.add(new ImmutableTag("networForm",rgEmsInfo.getNetworForm()));
//                            tags.add(new ImmutableTag("nowData",rgEmsInfo.getNowData()));
//                            tags.add(new ImmutableTag("owner",rgEmsInfo.getOwner()));
//                            tags.add(new ImmutableTag("province_code",getRgInfo.get(rgEmsInfo.getProvince())));
//                            tags.add(new ImmutableTag("province",rgEmsInfo.getProvince()));
//                            tags.add(new ImmutableTag("resName",rgEmsInfo.getResName()));
//                            tags.add(new ImmutableTag("resType",rgEmsInfo.getResType()));
//
//                            AtomicInteger filesizeint = registry.gauge("file_size_rg", tags, new AtomicInteger((int) fileSize));
//
//                            RgEmsMap.get("filesize").put(rgEmsInfo.getNowData()+rgEmsInfo.getFileInfo()+rgEmsInfo.getResName()+rgEmsInfo.getFileName(),filesizeint);
//                        }
//
//                        if (RgEmsMap.get("filenb").containsKey(rgEmsInfo.getNowData()+rgEmsInfo.getFileInfo()+rgEmsInfo.getResName()+rgEmsInfo.getFileName())) {
//                            RgEmsMap.get("filenb").get(rgEmsInfo.getNowData()+rgEmsInfo.getFileInfo()+rgEmsInfo.getResName()+rgEmsInfo.getFileName()).set((int) fileNb);
//                        } else {
//                            List<Tag> tags = new ArrayList<>();
//
//                            tags.add(new ImmutableTag("emsIp",rgEmsInfo.getEmsIp()));
//                            tags.add(new ImmutableTag("emsName",rgEmsInfo.getEmsName()));
//                            tags.add(new ImmutableTag("fileInfo",rgEmsInfo.getFileInfo()));
//                            tags.add(new ImmutableTag("fileName",rgEmsInfo.getFileName()));
//                            tags.add(new ImmutableTag("networForm",rgEmsInfo.getNetworForm()));
//                            tags.add(new ImmutableTag("nowData",rgEmsInfo.getNowData()));
//                            tags.add(new ImmutableTag("owner",rgEmsInfo.getOwner()));
//                            tags.add(new ImmutableTag("province_code",getRgInfo.get(rgEmsInfo.getProvince())));
//                            tags.add(new ImmutableTag("province",rgEmsInfo.getProvince()));
//                            tags.add(new ImmutableTag("resName",rgEmsInfo.getResName()));
//                            tags.add(new ImmutableTag("resType",rgEmsInfo.getResType()));
//                            AtomicInteger filenbint = registry.gauge("file_nb_rg", tags, new AtomicInteger((int) fileNb));
//
//                            RgEmsMap.get("filenb").put(rgEmsInfo.getNowData()+rgEmsInfo.getFileInfo()+rgEmsInfo.getResName()+rgEmsInfo.getFileName(),filenbint);
//                        }
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                });
//
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//    }
//
//
//    public static long getLineNumber(File file) {
//        if (file.exists()) {
//            try {
//                FileReader fileReader = new FileReader(file);
//                LineNumberReader lineNumberReader = new LineNumberReader(fileReader);
//                lineNumberReader.skip(Long.MAX_VALUE);
//                long lines = lineNumberReader.getLineNumber();
//                fileReader.close();
//                lineNumberReader.close();
//                return lines;
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//        return 0;
//    }
//
//}
